package Sync.Tool;

import Sync.InteractiveLogic;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class SyncTool {

    private static final Gson gson = new GsonBuilder()
            .setPrettyPrinting() // 可选：格式化JSON输出
            .create();

    /**
     * 将 InteractiveLogic 对象序列化为 JSON 字符串
     * @param interactiveLogic 要序列化的对象
     * @return JSON 字符串
     */
    public static String toJson(InteractiveLogic interactiveLogic) {
        if (interactiveLogic == null) {
            return "{}";
        }
        return gson.toJson(interactiveLogic);
    }

    /**
     * 将 JSON 字符串反序列化为 InteractiveLogic 对象
     * @param json JSON 字符串
     * @return InteractiveLogic 对象
     */
    public static InteractiveLogic fromJson(String json) {
        if (json == null || json.isEmpty()) {
            return new InteractiveLogic();
        }
        return gson.fromJson(json, InteractiveLogic.class);
    }

    /**
     * 深拷贝 InteractiveLogic 对象
     * @param original 原始对象
     * @return 新的 InteractiveLogic 对象
     */
    public static InteractiveLogic deepCopy(InteractiveLogic original) {
        String json = toJson(original);
        return fromJson(json);
    }
    /**
     * 获取指定目录下的所有文件（不包括子目录中的文件）
     * @param directory 目录文件
     * @return 文件集合
     */
    public static List<File> listFilesInDirectory(File directory) {
        List<File> files = new ArrayList<>();

        if (directory == null || !directory.exists() || !directory.isDirectory()) {
            return files;
        }

        File[] fileList = directory.listFiles();
        if (fileList != null) {
            for (File file : fileList) {
                if (file.isFile()) {
                    files.add(file);
                }
            }
        }

        return files;
    }
    /**
     * 检查目录下是否存在名为"编辑时间较旧的文件保存"的子文件夹，如果不存在则创建该文件夹
     * @param dir 目录文件
     * @return 子文件夹File对象
     */
    public static File createOldFilesDirectory(File dir) {
        if (dir == null || !dir.exists() || !dir.isDirectory()) {
            return null;
        }

        File oldFilesDir = new File(dir, "编辑时间较旧的文件保存");
        if (!oldFilesDir.exists()) {
            oldFilesDir.mkdirs();
        }

        return oldFilesDir;
    }



}
